﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Entidades;
using System.Data;
namespace ADOConectado
{
    public static class dbClientes
    {
        public static int EliminarCliente(int paramDni)
        {
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            SqlCommand objCommand = new SqlCommand("DELETE FROM Clientes WHERE intDni = @paramDni", objConexion);
            SqlParameter objDni = new SqlParameter("@paramDni", paramDni);
            objCommand.Parameters.Add(objDni);
            objConexion.Open();
            return objCommand.ExecuteNonQuery();
            objConexion.Close();
        }

        public static List<Cliente> BuscaClientes(string paramApellido, string  paramDni, string paramLocalidad)
        {


                List<Cliente> lstClientes = new List<Cliente>();
                SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
                objConexion.Open();
                SqlCommand dataCommand = new SqlCommand("BuscarClientes", objConexion);
                dataCommand.CommandType = CommandType.StoredProcedure;
                //dataCommand.Parameters.  AddWithValue("@varApellido”, paramApellido);
                if(paramApellido != "")
                    dataCommand.Parameters.AddWithValue("@varApellido", paramApellido);
                else
                dataCommand.Parameters.AddWithValue("@varApellido",System.DBNull.Value);
                if(paramDni != "")
                dataCommand.Parameters.AddWithValue("@intDni", Convert.ToInt32(paramDni));
                else
                dataCommand.Parameters.AddWithValue("@intDni",System.DBNull.Value);
                if(paramLocalidad != "")
                    dataCommand.Parameters.AddWithValue("@varLocalidad", paramLocalidad);
                else
                dataCommand.Parameters.AddWithValue("@varLocalidad",System.DBNull.Value);

                //SqlParameter Apellido = new SqlParameter("@varApellido", SqlDbType.VarChar, 10);
                //dataCommand.Parameters["@varApellido"].Value = paramApellido;
                //SqlParameter Dni = new SqlParameter("@varDni", SqlDbType.Int);
                //dataCommand.Parameters["@varDni"].Value = paramApellido;
                //SqlParameter Localidad = new SqlParameter("@varLocalidad", SqlDbType.VarChar, 10);
                //dataCommand.Parameters["@varLocalidad"].Value = paramLocalidad;
                SqlDataReader objReader = dataCommand.ExecuteReader();

            try
            {
                    while (objReader.Read())
                {
                    Cliente objCliente = new Cliente(Convert.ToInt32(objReader["intIdCliente"]), objReader["varNombre"].ToString(), objReader["varApellido"].ToString(), objReader["varDireccion"].ToString(), objReader["varTelefono"].ToString(), objReader["varLocalidad"].ToString(), Convert.ToInt32(objReader["intDni"]) , objReader["varOpinion"].ToString());

                    lstClientes.Add(objCliente);
                }
                return lstClientes;
            }
            catch (Exception ex)
            {
                throw new System.ArgumentException("Parameter cannot be null", "original");
            }
            finally
            {
                objConexion.Close();
            }
        }

        public static void AgregarCliente(Cliente paramCliente)
        {

            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("AgregarCliente", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@varNombre", paramCliente.Nombre);
            dataCommand.Parameters.AddWithValue("@varApellido", paramCliente.Apellido);
            dataCommand.Parameters.AddWithValue("@varDireccion", paramCliente.Direccion);
            dataCommand.Parameters.AddWithValue("@intDni", paramCliente.Dni);
            dataCommand.Parameters.AddWithValue("@varLocalidad", paramCliente.Localidad);
            dataCommand.Parameters.AddWithValue("@varTelefono",paramCliente.Telefono);
            dataCommand.Parameters.AddWithValue("@varOpinion", paramCliente.Opinion);
            
            dataCommand.ExecuteNonQuery();
        }

        public static Cliente ListarCliente(int paramDni)
        {
            SqlDataReader objReader = null;
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            SqlCommand objCommand = new SqlCommand("SELECT * FROM Clientes WHERE intDni=@dni", objConexion);
            SqlParameter objID = new SqlParameter("@dni", paramDni);
            objCommand.Parameters.Add(objID);
                objConexion.Open();
                objReader = objCommand.ExecuteReader();
                if (objReader.Read() == true)
                {
                    Cliente objCliente = new Cliente(Convert.ToInt32(objReader["intIdCliente"]), objReader["varNombre"].ToString(), objReader["varApellido"].ToString(), objReader["varDireccion"].ToString(), objReader["varTelefono"].ToString(), objReader["varLocalidad"].ToString(), Convert.ToInt32((objReader["intDni"])), objReader["varOpinion"].ToString());
                    objConexion.Close();
                    return objCliente;
                }
                else
                {
                    objConexion.Close();
                    return null;
                } 
        }
        public static void ModificarCliente(Cliente paramCliente)
        {

            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("ModificarCliente", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@varNombre", paramCliente.Nombre);
            dataCommand.Parameters.AddWithValue("@varApellido", paramCliente.Apellido);
            dataCommand.Parameters.AddWithValue("@varDireccion", paramCliente.Direccion);
            dataCommand.Parameters.AddWithValue("@intDni", paramCliente.Dni);
            dataCommand.Parameters.AddWithValue("@varLocalidad", paramCliente.Localidad);
            dataCommand.Parameters.AddWithValue("@varTelefono", paramCliente.Telefono);
            dataCommand.Parameters.AddWithValue("@varOpinion", paramCliente.Opinion);
            dataCommand.ExecuteNonQuery();
        }

        public static bool BuscarClientePorDni(int paramDni)
        {
            SqlDataReader objReader = null;
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            SqlCommand objCommand = new SqlCommand("SELECT * FROM Clientes WHERE intDni=@dni", objConexion);
            SqlParameter objID = new SqlParameter("@dni", paramDni);
            objCommand.Parameters.Add(objID);
            objConexion.Open();
            objReader = objCommand.ExecuteReader();
            if (objReader.Read() == true)
            {
                return true;
            }
            else
            {
                return false;
            } 
 
        }
   
    }
}
